package com.internetCafes.spms.web.toolbox.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.internetCafes.spms.web.sys.entity.dto.qualiconf.QualiCertDeleteDto;
import com.internetCafes.spms.web.sys.entity.dto.qualiconf.QualiConfigCertConfigDto;
import com.internetCafes.spms.web.sys.entity.vo.qualiconf.QualiConfigCertConfigVo;
import com.internetCafes.spms.web.sys.model.ConfInfo;
import com.internetCafes.spms.web.toolbox.entity.QualiCertCond;
import com.internetCafes.spms.web.toolbox.entity.po.QualiCertCondPo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 资质证书条件信息表 服务类
 * </p>
 *
 * @author Zj
 * @since 2021-06-13
 */
public interface IQualiCertCondService extends IService<QualiCertCond> {

    /**
     * 批量删除证书条件
     *
     * @param dto 请求参数
     */
    void qualiConfigCertDeleteBatch(QualiCertDeleteDto dto);

    /**
     * 根据证书条件记录id 删除组
     *
     * @param recordIds 记录id
     */
    void deleteGroupByRecordIds(List<Long> recordIds);

    /**
     * 证书条件删除
     *
     * @param id 条件记录id
     */
    void qualiConfigCertDelete(Long id);

    /**
     * 证书条件修改编辑
     *
     * @param dto 请求参数
     */
    QualiConfigCertConfigVo qualiConfigCertEdit(QualiConfigCertConfigDto dto);

    /**
     * 证书条件添加
     *
     * @param dto 请求参数
     */
    QualiConfigCertConfigVo qualiConfigCertConfig(QualiConfigCertConfigDto dto);

    /**
     * 证书条件拼接
     *
     * @param certConds 证书条件列表
     * @return 结果
     */
    String contentSplicing(List<QualiCertCond> certConds, String splicingWord, Map<String, List<ConfInfo>> certTypeGroup);

    /**
     * 获取证书条件列表 通过groupId
     *
     * @param groupId 组id
     * @return 证书列表
     */
    List<QualiCertCondPo> getCertListByGroupId(Long groupId);

    /**
     * 获取证书条件列表 通过groupId
     *
     * @param recordId 记录id
     * @return 证书列表
     */
    List<QualiCertCondPo> getCertListByRecordId(Long recordId);

    /**
     * 获取证书条件列表 通过groupId
     *
     * @param qualiId 记录id
     * @return 证书列表
     */
    List<QualiCertCondPo> getCertListByQualiId(Long qualiId);

    /**
     * 获取证书条件列表 通过groupId
     *
     * @param wrapper 查询条件
     * @return 证书列表
     */
    List<QualiCertCondPo> getCertList(Wrapper<QualiCertCond> wrapper);
}
